import java.awt.Color;

// 游戏规则实现类
public class MiningGameRules implements GameRules {
    // 初始耐久度
    public int getStartDurability() {
        return 100; // 初始100点耐久
    }

    // 最大10层
    public int getMaxLevels() {
        return 10;
    }

    // 地图大小随层数增加
    public int getMapSize(int level) {
        return 5 + level; // 第一层5x5，每层+1
    }

    // 计算分数
    public int countScore(int level, int minedCount) {
        return level * minedCount * 10; // 层数×数量×10
    }

    // 不同矿物消耗不同耐久
    public int getCost(String mineral) {
        if(mineral.equals("铁")) return 5;
        if(mineral.equals("铜")) return 10;
        if(mineral.equals("银")) return 15;
        if(mineral.equals("金")) return 20;
        if(mineral.equals("钻石")) return 25;
        return 0;
    }

    // 修理增加30耐久
    public int getFixAmount() {
        return 30;
    }

    // 耐久<=0游戏结束
    public boolean checkGameOver(int durability) {
        return durability <= 0;
    }

    // 所有矿物类型
    public String[] getAllMinerals() {
        return new String[]{"铁","铜","银","金","钻石"};
    }

    // 墙的符号
    public String getWall() {
        return "墙";
    }

    // 下层入口符号
    public String getDown() {
        return "下";
    }

    // 15%概率生成墙
    public double getWallChance() {
        return 0.15;
    }

    // 矿物颜色
    public Color getColor(String mineral) {
        switch(mineral) {
            case "铁": return Color.GRAY;
            case "铜": return new Color(184, 115, 51);
            case "银": return Color.LIGHT_GRAY;
            case "金": return Color.YELLOW;
            case "钻石": return Color.CYAN;
            case "墙": return Color.DARK_GRAY;
            case "下": return Color.BLUE;
            case "修": return Color.GREEN;
            case "人": return Color.RED;
            default: return Color.WHITE;
        }
    }
}
